import pika

"""
除了设置优先级，我们还可以队列的持久化存储，如果不设置持久化存储，RabbitMQ 重启之后数据就没有了。
如果要开启持久化存储，可以在声明队列时指定 durable 为 True
同时在添加消息的时候需要指定 BasicProperties 对象的 delivery_mode 为 2
"""


MAX_PRIORITY = 100
QUEUE_NAME = 'scrape'

connection = pika.BlockingConnection(
    pika.ConnectionParameters(host='localhost'))
channel = connection.channel()

# 删除名为 'scrape' 的队列-- 因为之前队列已经创建了，所以为了不报错，先删除队列
# channel.queue_delete(queue=QUEUE_NAME)
# print("Queue deleted.")

channel.queue_declare(queue=QUEUE_NAME, arguments={
    'x-max-priority': MAX_PRIORITY
}, durable=True)

while True:
    data, priority = input().split()
    channel.basic_publish(exchange='',
                          routing_key=QUEUE_NAME,
                          properties=pika.BasicProperties(
                              priority=int(priority),
                              delivery_mode=2,
                          ),
                          body=data)
    print(f'Put {data}')